package com.rayboo.example.collections.map;

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

/**
 * LinkedHashMap示例
 *
 * @author ray
 * @since 2019/07/25
 *
 * <p>LinkedHashMap是Map接口的Hash表和链表实现，具有可预测的迭代顺序。
 * 此实现与HashMap的不同之处在于它维护了一个贯穿其所有条目的双向链表。
 * 此链接列表定义迭代排序，通常是键插入映射的顺序（插入顺序）。
 *
 * <p>https://beginnersbook.com/2013/12/linkedhashmap-in-java/
 */
public class LinkedHashMapExample {

    public static void main(String args[]) {
        // HashMap Declaration
        LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<Integer, String>();

        //Adding elements to LinkedHashMap
        linkedHashMap.put(22, "Abey");
        linkedHashMap.put(33, "Dawn");
        linkedHashMap.put(1, "Sherry");
        linkedHashMap.put(2, "Karon");
        linkedHashMap.put(100, "Jim");

        // Generating a Set of entries
        Set set = linkedHashMap.entrySet();

        // Displaying elements of LinkedHashMap
        Iterator iterator = set.iterator();
        while(iterator.hasNext()) {
            Map.Entry me = (Map.Entry)iterator.next();
            System.out.print("Key is: "+ me.getKey() +
                    " & Value is: "+me.getValue()+"\n");
        }
    }
}
